From c524f988bf8e6217fc7c22be1f4784ce00daee55 Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Sun, 1 Apr 2007 18:50:38 +0000 Subject: [PATCH] Fix bottom-oriented notebook tabs on Win32. #399253 svn path=/trunk/; revision=17575 --- ChangeLog | 5 +++++ modules/engines/ms-windows/msw_style.c | 29 ++++++++++++++++---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7df72a3599..2508844a83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-04-01 Cody Russell + + * modules/engines/ms-windows/msw_style.c: Fix rendering of + notebook tabs when they are bottom-oriented. Fixes #399253. + 2007-03-31 Elijah Newren * gdk/x11/gdkwindow-x11.c (setup_toplevel_window, diff --git a/modules/engines/ms-windows/msw_style.c b/modules/engines/ms-windows/msw_style.c index 49ab0fb801..5fe0c2029a 100755 --- a/modules/engines/ms-windows/msw_style.c +++ b/modules/engines/ms-windows/msw_style.c @@ -2413,18 +2413,12 @@ draw_extension (GtkStyle * style, } else if (real_gap_side == GTK_POS_BOTTOM) { - x2 = x; - y2 = y + (state_type == GTK_STATE_NORMAL ? 0 : notebook->tab_vborder); + x2 = 0; + y2 = 0; w2 = width; h2 = height - (state_type == GTK_STATE_NORMAL ? 0 : notebook->tab_vborder * 2); - target = window; - - /* If we are currently drawing the right-most tab (any state)... */ - if (widget->allocation.x + widget->allocation.width - border_width == x + width) - { - x2--; - w2--; - } + pixmap = gdk_pixmap_new (window, w2, h2, -1); + target = pixmap; } if (xp_theme_draw (target, tab_part, style, x2, y2, w2, h2, state_type, NULL /*area*/)) @@ -2473,12 +2467,25 @@ draw_extension (GtkStyle * style, h2--; } } + else if (real_gap_side == GTK_POS_BOTTOM) + { + x2 = x; + y2 = y + (state_type == GTK_STATE_NORMAL ? 0 : notebook->tab_vborder); + w2 = width; + h2 = height - (state_type == GTK_STATE_NORMAL ? 0 : notebook->tab_vborder * 2); + /* If we are currently drawing the right-most tab (any state)... */ + if (widget->allocation.x + widget->allocation.width - border_width == x + width) + { + x2--; + w2--; + } + } gdk_draw_pixbuf (window, NULL, pixbuf, 0, 0, x2, y2, w2, h2, GDK_RGB_DITHER_NONE, 0, 0); g_object_unref (G_OBJECT (pixbuf)); - if (real_gap_side == GTK_POS_LEFT || real_gap_side == GTK_POS_RIGHT) + if (real_gap_side == GTK_POS_LEFT || real_gap_side == GTK_POS_RIGHT || real_gap_side == GTK_POS_BOTTOM) { g_object_unref (pixmap); } -- 2.30.2